#!/usr/bin/env python3
# Copyright (C) 2024 Checkmk GmbH - License: GNU General Public License v2
# This file is part of Checkmk (https://checkmk.com). It is subject to the terms and
# conditions defined in the file COPYING, which is part of this source code package.
import pytest

from cmk.agent_based.v2 import (
    CheckResult,
    DiscoveryResult,
    get_value_store,
    Metric,
    Result,
    Service,
    State,
    StringTable,
)
from cmk.plugins.msexch.agent_based.msexch_isclienttype import (
    check_msexch_isclienttype,
    discover_msexch_isclienttype,
    Params,
)
from cmk.plugins.windows.agent_based.libwmi import parse_wmi_table

_AGENT_OUTPUT = [
    [
        "AdministrativeRPCrequestsPersec",
        "AdminRPCRequests",
        "Caption",
        "Description",
        "DirectoryAccessLDAPSearchesPersec",
        "Frequency_Object",
        "Frequency_PerfTime",
        "Frequency_Sys100NS",
        "JetLogRecordBytesPersec",
        "JetLogRecordsPersec",
        "JetPagesModifiedPersec",
        "JetPagesPrereadPersec",
        "JetPagesReadPersec",
        "JetPagesReferencedPersec",
        "JetPagesRemodifiedPersec",
        "LazyindexescreatedPersec",
        "LazyindexesdeletedPersec",
        "LazyindexfullrefreshPersec",
        "LazyindexincrementalrefreshPersec",
        "MessagescreatedPersec",
        "MessagesdeletedPersec",
        "MessagesopenedPersec",
        "MessagesupdatedPersec",
        "Name",
        "PropertypromotionsPersec",
        "RPCAverageLatency",
        "RPCAverageLatency_Base",
        "RPCBytesReceivedPersec",
        "RPCBytesSentPersec",
        "RPCOperationsPersec",
        "RPCPacketsPersec",
        "RPCRequests",
        "Timestamp_Object",
        "Timestamp_PerfTime",
        "Timestamp_Sys100NS",
    ],
    [
        "13203303",
        "0",
        "",
        "",
        "61388",
        "0",
        "1953125",
        "10000000",
        "614653228",
        "12092743",
        "49049",
        "826",
        "312",
        "53440863",
        "8506178",
        "3",
        "24",
        "3",
        "838",
        "80486",
        "23006",
        "101226",
        "23140",
        "_total",
        "0",
        "1903888",
        "3908424",
        "1040",
        "400087174",
        "6138327",
        "3908424",
        "1145789",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
]

_AGENT_OUTPUT_REGRESSION_01 = [
    [
        "AdministrativeRPCrequestsPersec",
        "AdminRPCRequests",
        "Caption",
        "Description",
        "DirectoryAccessLDAPSearchesPersec",
        "Frequency_Object",
        "Frequency_PerfTime",
        "Frequency_Sys100NS",
        "JetLogRecordBytesPersec",
        "JetLogRecordsPersec",
        "JetPagesModifiedPersec",
        "JetPagesPrereadPersec",
        "JetPagesReadPersec",
        "JetPagesReferencedPersec",
        "JetPagesRemodifiedPersec",
        "LazyindexescreatedPersec",
        "LazyindexesdeletedPersec",
        "LazyindexfullrefreshPersec",
        "LazyindexincrementalrefreshPersec",
        "MessagescreatedPersec",
        "MessagesdeletedPersec",
        "MessagesopenedPersec",
        "MessagesupdatedPersec",
        "Name",
        "PropertypromotionsPersec",
        "RPCAverageLatency",
        "RPCAverageLatency_Base",
        "RPCBytesReceivedPersec",
        "RPCBytesSentPersec",
        "RPCOperationsPersec",
        "RPCPacketsPersec",
        "RPCRequests",
        "Timestamp_Object",
        "Timestamp_PerfTime",
        "Timestamp_Sys100NS",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "hrc",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "officegraph",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "publicfolderhierarchyreplication",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "unifiedauditing",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "snackyservice",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "addriver",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "liveidbasicauth",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "pop",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "notificationbroker",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "958",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "unifiedpolicy",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "outlookservice",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "mailboxloadbalance",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "anchorservice",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "contentindexingmovedestination",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "ediscoverysearch",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "publicfoldersystem",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "11495",
        "0",
        "",
        "",
        "22627",
        "0",
        "1953125",
        "10000000",
        "540",
        "6",
        "1",
        "0",
        "0",
        "23098",
        "3",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "simplemigration",
        "0",
        "69283",
        "126447",
        "0",
        "43957144",
        "287377",
        "126447",
        "11495",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "loadgen",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "59353",
        "0",
        "",
        "",
        "4311",
        "0",
        "1953125",
        "10000000",
        "1740",
        "18",
        "0",
        "8",
        "10",
        "3388915",
        "12",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "storeactivemonitoring",
        "0",
        "176465",
        "574334",
        "0",
        "331274072",
        "1033798",
        "574334",
        "57433",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "teammailbox",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "sms",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "inference",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "183763",
        "0",
        "",
        "",
        "88",
        "0",
        "1953125",
        "10000000",
        "50065286",
        "2423113",
        "5244",
        "434",
        "135",
        "3750983",
        "1679627",
        "0",
        "24",
        "0",
        "80",
        "0",
        "0",
        "0",
        "0",
        "maintenance",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "86269",
        "0",
        "",
        "",
        "2",
        "0",
        "1953125",
        "10000000",
        "66",
        "3",
        "1",
        "0",
        "4",
        "311",
        "1",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "ha",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "transportsync",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "55887",
        "0",
        "",
        "",
        "108",
        "0",
        "1953125",
        "10000000",
        "580",
        "6",
        "0",
        "0",
        "0",
        "108",
        "4",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "migration",
        "0",
        "8668",
        "49818",
        "0",
        "3645017",
        "141151",
        "49818",
        "8303",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "10413",
        "0",
        "1953125",
        "10000000",
        "23651",
        "210",
        "0",
        "4",
        "1",
        "22859226",
        "140",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "momt",
        "0",
        "524761",
        "1148614",
        "0",
        "1301595880",
        "2067486",
        "1148614",
        "114863",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "41455",
        "0",
        "",
        "",
        "1589",
        "0",
        "1953125",
        "10000000",
        "20909367",
        "639566",
        "1293",
        "380",
        "92",
        "3712279",
        "427309",
        "0",
        "0",
        "0",
        "752",
        "0",
        "2",
        "100",
        "96",
        "timebasedassistants",
        "0",
        "53399",
        "29902",
        "1040",
        "27396903",
        "72740",
        "29902",
        "1060",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "approvalapi",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "webservices",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "unifiedmessaging",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "11502",
        "0",
        "",
        "",
        "7091",
        "0",
        "1953125",
        "10000000",
        "125279633",
        "1345068",
        "10501",
        "0",
        "18",
        "1925947",
        "1016274",
        "0",
        "0",
        "0",
        "0",
        "23004",
        "0",
        "11502",
        "23004",
        "monitoring",
        "0",
        "304479",
        "897860",
        "0",
        "160522104",
        "1012880",
        "897860",
        "165768",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "22857",
        "0",
        "",
        "",
        "28",
        "0",
        "1953125",
        "10000000",
        "5249",
        "131",
        "12",
        "0",
        "3",
        "427880",
        "77",
        "1",
        "0",
        "1",
        "4",
        "0",
        "0",
        "4",
        "0",
        "management",
        "0",
        "623",
        "280",
        "0",
        "208125",
        "669",
        "280",
        "15",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "elc",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "availabilityservice",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "3419753",
        "0",
        "",
        "",
        "1898",
        "0",
        "1953125",
        "10000000",
        "293",
        "7",
        "0",
        "0",
        "2",
        "948423",
        "4",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "35747",
        "0",
        "contentindexing",
        "0",
        "103789",
        "72246",
        "0",
        "202073477",
        "123630",
        "72246",
        "1093",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "rpchttp",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "imap",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "owa",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "8903712",
        "0",
        "",
        "",
        "2421",
        "0",
        "1953125",
        "10000000",
        "146072449",
        "4829076",
        "537",
        "0",
        "8",
        "12336816",
        "3218853",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "202",
        "0",
        "eventbasedassistants",
        "0",
        "4017",
        "2568",
        "0",
        "2752073",
        "6242",
        "2568",
        "108",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "10096",
        "0",
        "1953125",
        "10000000",
        "71226",
        "808",
        "80",
        "0",
        "2",
        "1604",
        "544",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "19165",
        "40",
        "airsync",
        "0",
        "113736",
        "76832",
        "0",
        "49952360",
        "172924",
        "76832",
        "1",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "618",
        "0",
        "1953125",
        "10000000",
        "272223148",
        "2854731",
        "31380",
        "0",
        "37",
        "4065273",
        "2163330",
        "2",
        "0",
        "2",
        "2",
        "57482",
        "23004",
        "34506",
        "0",
        "transport",
        "0",
        "543742",
        "529138",
        "0",
        "424193667",
        "1219430",
        "529138",
        "40243",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "user",
        "0",
        "926",
        "400382",
        "0",
        "0",
        "0",
        "400382",
        "400382",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "406299",
        "0",
        "",
        "",
        "98",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "administrator",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "0",
        "0",
        "",
        "",
        "0",
        "0",
        "1953125",
        "10000000",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "0",
        "system",
        "0",
        "0",
        "3",
        "0",
        "0",
        "0",
        "3",
        "345025",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
    [
        "13203303",
        "0",
        "",
        "",
        "61388",
        "0",
        "1953125",
        "10000000",
        "614653228",
        "12092743",
        "49049",
        "826",
        "312",
        "53440863",
        "8506178",
        "3",
        "24",
        "3",
        "838",
        "80486",
        "23006",
        "101226",
        "23140",
        "_total",
        "0",
        "1903888",
        "3908424",
        "1040",
        "400087174",
        "6138327",
        "3908424",
        "1145789",
        "0",
        "6743176285319",
        "130951777565340000",
    ],
]


@pytest.mark.parametrize(
    "string_table, expected_result",
    [
        (
            _AGENT_OUTPUT,
            [
                Service(item="_total", parameters={}),
            ],
        ),
        (
            _AGENT_OUTPUT_REGRESSION_01,
            [
                Service(item="_total", parameters={}),
                Service(item="addriver", parameters={}),
                Service(item="administrator", parameters={}),
                Service(item="airsync", parameters={}),
                Service(item="anchorservice", parameters={}),
                Service(item="approvalapi", parameters={}),
                Service(item="availabilityservice", parameters={}),
                Service(item="contentindexing", parameters={}),
                Service(item="contentindexingmovedestination", parameters={}),
                Service(item="ediscoverysearch", parameters={}),
                Service(item="elc", parameters={}),
                Service(item="eventbasedassistants", parameters={}),
                Service(item="ha", parameters={}),
                Service(item="hrc", parameters={}),
                Service(item="imap", parameters={}),
                Service(item="inference", parameters={}),
                Service(item="liveidbasicauth", parameters={}),
                Service(item="loadgen", parameters={}),
                Service(item="mailboxloadbalance", parameters={}),
                Service(item="maintenance", parameters={}),
                Service(item="management", parameters={}),
                Service(item="migration", parameters={}),
                Service(item="momt", parameters={}),
                Service(item="monitoring", parameters={}),
                Service(item="notificationbroker", parameters={}),
                Service(item="officegraph", parameters={}),
                Service(item="outlookservice", parameters={}),
                Service(item="owa", parameters={}),
                Service(item="pop", parameters={}),
                Service(item="publicfolderhierarchyreplication", parameters={}),
                Service(item="publicfoldersystem", parameters={}),
                Service(item="rpchttp", parameters={}),
                Service(item="simplemigration", parameters={}),
                Service(item="sms", parameters={}),
                Service(item="snackyservice", parameters={}),
                Service(item="storeactivemonitoring", parameters={}),
                Service(item="system", parameters={}),
                Service(item="teammailbox", parameters={}),
                Service(item="timebasedassistants", parameters={}),
                Service(item="transport", parameters={}),
                Service(item="transportsync", parameters={}),
                Service(item="unifiedauditing", parameters={}),
                Service(item="unifiedmessaging", parameters={}),
                Service(item="unifiedpolicy", parameters={}),
                Service(item="user", parameters={}),
                Service(item="webservices", parameters={}),
            ],
        ),
    ],
)
def test_parse_msexch_isclienttype(
    string_table: StringTable, expected_result: DiscoveryResult
) -> None:
    section = parse_wmi_table(string_table)
    assert sorted(discover_msexch_isclienttype(section)) == expected_result


@pytest.mark.usefixtures("initialised_item_state")
@pytest.mark.parametrize(
    "string_table, item, params, expected_result",
    [
        (
            _AGENT_OUTPUT,
            "_total",
            Params(
                store_latency_s=("no_levels", None),
                clienttype_latency_s=("no_levels", None),
                clienttype_requests=("no_levels", None),
            ),
            [
                Result(state=State.OK, summary="Average latency: 487 microseconds"),
                Metric("average_latency_s", 0.00048712422193702634),
                Result(state=State.OK, summary="RPC Requests/sec: 0.00"),
                Metric("requests_per_sec", 0.0),
            ],
        ),
        (
            _AGENT_OUTPUT_REGRESSION_01,
            "_total",
            Params(
                store_latency_s=("no_levels", None),
                clienttype_latency_s=("no_levels", None),
                clienttype_requests=("no_levels", None),
            ),
            [
                Result(state=State.OK, summary="Average latency: 487 microseconds"),
                Metric("average_latency_s", 0.00048712422193702634),
                Result(state=State.OK, summary="RPC Requests/sec: 0.00"),
                Metric("requests_per_sec", 0.0),
            ],
        ),
        (
            _AGENT_OUTPUT_REGRESSION_01,
            "_total",
            Params(
                store_latency_s=("no_levels", None),
                clienttype_latency_s=("fixed", (0.0002, 0.0004)),
                clienttype_requests=("no_levels", None),
            ),
            [
                Result(
                    state=State.CRIT,
                    summary="Average latency: 487 microseconds (warn/crit at 200 microseconds/400 microseconds)",
                ),
                Metric("average_latency_s", 0.00048712422193702634, levels=(0.0002, 0.0004)),
                Result(state=State.OK, summary="RPC Requests/sec: 0.00"),
                Metric("requests_per_sec", 0.0),
            ],
        ),
    ],
)
def test_check_msexch_isclienttype(
    string_table: StringTable,
    item: str,
    params: Params,
    expected_result: CheckResult,
) -> None:
    get_value_store().update({"RPCRequests_": (0.0, 1145789)})
    section = parse_wmi_table(string_table)
    assert list(check_msexch_isclienttype(item, params, section)) == expected_result
